import { defineStore } from 'pinia';
// import type { AppState } from "./types";

const useAppStore = defineStore('app', {
  state: () => ({
    systemInfo: {},
    startOrder: false, // 开始订单
    completeOrder: false, // 完成订单
    timeData: {}, // 时间对象(日/时/分/秒/毫秒)
    allTime: 3, // 总时间
    currentTime: 0, // 当前剩余时间
    step: 1, // 当前步骤
    modelVale: 0, // 当前进度值
    target: 0, // 当前进度环
    timer: null,
    status: null,
    statusText: null, // 状态文本
  }),
  getters: {
    getSystemInfo() {
      return this.systemInfo;
    },
    obj() {
      return {
        allTime: this.allTime, // 总时间
        currentTime: this.currentTime, // 总时间
        step: this.step, // 总时间
        modelVale: this.modelVale, // 总时间
        target: this.target, // 当前剩余时间
      };
    },
  },
  actions: {
    setSystemInfo(info) {
      this.systemInfo = info;
    },
    initSystemInfo() {
      uni.getSystemInfo({
        success: (res) => {
          this.setSystemInfo(res);
        },
        fail: (err) => {
          console.error(err);
        },
      });
    },
    checkUpdate() {
      const updateManager = uni.getUpdateManager();
      updateManager.onCheckForUpdate((res) => {
        // 请求完新版本信息的回调

        console.log(res.hasUpdate);
      });
      updateManager.onUpdateReady(() => {
        uni.showModal({
          title: '更新提示',
          content: '新版本已经准备好，是否重启应用?',
          success(res) {
            if (res.confirm) {
              // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
              updateManager.applyUpdate();
            }
          },
        });
      });
      updateManager.onUpdateFailed((res) => {
        console.error(res);
        // 新的版本下载失败
        uni.showToast({
          title: '更新失败',
          icon: 'error',
        });
      });
    },

    setOrderStatus({ startOrder, completeOrder }) {
      this.startOrder = startOrder;
      this.completeOrder = completeOrder;
    },
    setStep(step) {
      this.step = step;
    },
    setProgress(params) {
      console.log('params--', params);

      for (const key in params) {
        this[key] = params[key];
      }
    },
    setTimer(timer) {
      if (this.timer) {
        clearInterval(this.timer);
        this.timer = null;
      }
      this.timer = timer;
    },
  },
});

export default useAppStore;
